--={{ Judgements & Combo code }}=--
--/ Al fin, totalmente funcional :D y limpiecito n_n
--/ Hecho desde cero tomando como base un par de estos
--/ pero viejos. Ahem, ya los borré x_x que importa...
--/ No, espera... si bajaste el SMcon ahí los puedes encontrar :D

local player = Var "Player"
local c

--/ Comandos here, para accesarlos (y editarlos) más cómodamente
--/ SMPREX3CVS partlog: fixear algunos zoomx's, se ve medio
--/ desfazado la relacion de los zooms de los números entre el judge y la etiqueta
--/ Edit: la flojera no me deja D:
--/ Edit2: aún con flojera y me di cuenta que la etiqueta de combo está más grande de lo que debiera...
local judgecommand = cmd(shadowlength,0;diffusealpha,1;zoomx,0.913;zoomy,1.175;decelerate,0.175;zoomx,0.62;zoomy,0.78;accelerate,0.06;zoomx,0.63;zoomy,0.82;sleep,0.04;diffusealpha,0.5;zoomx,0.97;zoomy,0.82;sleep,0.04;zoomx,0.63;zoomy,0.82;decelerate,0.175;zoomx,0.82;zoomy,0.82;diffusealpha,0)
local labelcommand = cmd(shadowlength,0;diffusealpha,1;zoomx,1.58;zoomy,1.6;y,100;decelerate,0.175;zoomx,1.09;zoomy,1.1;y,70;accelerate,0.06;zoomx,1.14;zoomy,1.1;y,71;sleep,0.04;diffusealpha,0.5;zoomx,1.66;zoomy,1.1;sleep,0.04;zoomx,1.14;zoomy,1.1;decelerate,0.175;zoomx,1.34;zoomy,1.1;diffusealpha,0)
local combocommand = cmd(shadowlength,0;diffusealpha,1;zoomx,1.58;zoomy,1.6;y,30;decelerate,0.175;zoomx,1.09;zoomy,1.1;y,21;accelerate,0.06;zoomx,1.14;zoomy,1.1;y,22;sleep,0.04;diffusealpha,0.5;zoomx,1.66;zoomy,1.1;sleep,0.04;zoomx,1.14;zoomy,1.1;decelerate,0.175;zoomx,1.34;zoomy,1.1;diffusealpha,0)

--frame correspondiente de cada judgment
local TNSframe = {
	TapNoteScore_CheckpointHit = 0;
	TapNoteScore_W1 = 0;
	TapNoteScore_W2 = 0;
	TapNoteScore_W3 = 1;
	TapNoteScore_W4 = 2;
	TapNoteScore_W5 = 3;
	TapNoteScore_Miss = 4;
	TapNoteScore_CheckpointMiss = 4;
}

--frame cuando se use la variable GradeReverse
--change v1.1
local TNSframeReversed = {
	TapNoteScore_CheckpointHit = 4;
	TapNoteScore_W1 = 4;
	TapNoteScore_W2 = 4;
	TapNoteScore_W3 = 3;
	TapNoteScore_W4 = 2;
	TapNoteScore_W5 = 1;
	TapNoteScore_Miss = 0;
	TapNoteScore_CheckpointMiss = 0;
}

return Def.ActorFrame {

	--a llamar a todos los children del actor frame
	--por su nombre (Name="<nombre>")
	InitCommand=function(self)
		c = self:GetChildren()
	end;

	--primer niño:
	--etiquetitas de juicios
	LoadActor("judgelabels")..{
		Name="judgm";
		InitCommand=cmd(pause;visible,false);
	};

	--segundo niño
	--contador del combo
	LoadFont("combo")..{
		Name="combo";
		InitCommand=cmd(shadowlength,0;vertalign,top);
	};

	--tercer niño
	--etiquetita de combo
	LoadActor("label")..{
		Name="label";
		InitCommand=cmd(visible,false;vertalign,top);
	};

	--"PERFECT"!
	JudgmentMessageCommand=function(self,param)
		local iTns = TNSframe[param.TapNoteScore]
		
		if getenv("GradeReverse") then
			iTns = TNSframeReversed[param.TapNoteScore]
		end
		--if no player then fuckyou I'm doing nothing...
		if param.Player ~= player then return end
		if param.HoldNoteScore then return end
		
		c.judgm:visible(true);
		c.judgm:setstate(iTns);
		c.judgm:stoptweening();
		--cmds
		(judgecommand)(c.judgm);
	end;

	ComboCommand=function(self,param)
		local combo = param.Misses or param.Combo;
		--visibilidad
		if combo < 4 then
			c.combo:visible(false);
			c.label:visible(false);
		else
			c.combo:visible(true);
			c.label:visible(true);
		end;
		
		--/ agregarle coloreado al combo y combo label
		--/ segun sea si es combo de misses en rojo;
		--/ si no que sea normal
		local ccolor
		if param.Misses then
			ccolor = color("1,0,0,1");
			--GradeReverse, combo misses no rojo
			if getenv("GradeReverse") then
				ccolor = color("1,1,1,1");
			end
		else
			ccolor = color("1,1,1,1");
			--GradeReverse, combo rojo
			if getenv("GradeReverse") then
				ccolor = color("1,0,0,1");
			end
		end;
		
		--"004"!
		c.combo:settext(string.format("%03i",combo));
		c.combo:stoptweening();
		c.combo:diffuse(ccolor);
		--cmds
		(combocommand)(c.combo)
		
		--"COMBO"!
		c.label:stoptweening();
		c.label:diffuse(ccolor);
		--cmds
		(labelcommand)(c.label)
	end;
}

--[[
code Daisuke Master (c)

Términos de uso:
1.- Eres libre de usar todo o parte de éste código, sólamente dame crédito o incluye este bracket de comments en el luafile
2.- No permito que se use para fines comerciales
3.- Si quieres usar el código para fin comercial
	a). Contáctame por X o Y medio pero que sea directo de preferencia
		(messenger, phone si se puede (aver donde lo consigues xD))
	b). Móchate una feriecita xD no seas gacho
]]